2023/12/23977字符

Promise串联

let pro1, pro2, pro3;
pro1 = new Promise(res => res())
console.log(pro1);  //--> Promise {<resolved>: undefined}  已决

pro2 = pro1
console.log(pro2);  //--> Promise {<resolved>: undefined}  已决

pro2 = pro1.then();
console.log(pro2);  //--> Promise {<pending>}  未决

pro3 = pro2;
console.log(pro3);  //--> Promise {<pending>}  未决

后续的 Promise 一定会等到前面的 Promise 有了后续处理结果后,才会变为已决状态

小试验

const pro1 = new Promise((res, rej) => {
    res(1);
})
const pro2 = pro1.then(res => {
    return res * 2;
});
pro2.then(res => {
    console.log(res + 1)  //--> 3
})
const pro1 = new Promise((res, rej) => {
    throw 1;
})
const pro2 = pro1.then(res => {
    return res * 2;
}, err => {
    return err * 3;
});
pro2.then(res => {
    console.log(res * 2);  //--> 6
}, err => {
    console.log(err * 3);
})